package com.xtwy.spike.mapper;

import com.xtwy.spike.entity.RedPacket;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 类的描述：
 *
 * @作者: 侯建军
 * @邮箱: 474177818@qq.com
 * @博客: https://blog.csdn.net/marquis888
 * @创建日期: 2018年12月02日  21:16
 * @版本: v1.0
 * @jdk版本使用: JDK1.8
 */
@Mapper
public interface RedPacketMapper {
    /**
     * 获取红包信息.
     * @param id --红包id
     * @return 红包具体信息
     */
    public RedPacket getRedPacket(Long id);

    /**
     * 扣减抢红包数.
     * @param id -- 红包id
     * @return 更新记录条数
     */
     int decreaseRedPacket(Long id);

    /**
     * 获取红包信息. 悲观锁的实现方式
     *
     * @param id
     *            --红包id
     * @return 红包具体信息
     */
     RedPacket getRedPacketForUpdate(Long id);

    /**
     * @Description: 扣减抢红包数. 乐观锁的实现方式
     *
     * @param id
     *            -- 红包id
     * @param version
     *            -- 版本标记
     *
     * @return: 更新记录条数
     */
     int decreaseRedPacketForVersion(@Param("id") Long id, @Param("version") Integer version);
}
